SeminárioLP-Linguagem Python 2/2014 - Christian (12/0028379)
Visão Geral Python é uma linguagem de programação de alto nível, multiparadigma (imperativa, orientada a objetos e funcional), criada em 1991 por Guido Van Rossum. Foi desenvolvida com o objetivo de aproveitar melhor o esforço do programador, ganhando em produtividade e manutenibilidade. Usa verificação de tipos dinâmica. Para começar a programar em Python é necessário fazer o download do interpretador, que pode ser obtido no site oficial da linguagem. Site oficial: https://www.python.org/ 'Critérios de Avaliação da Linguagem' Legibilidade: Uma das maiores vantagens de usar Python é sua ótima legibilidade, característica priorizada no desenvolvimento da linguagem. Em Python, blocos de código são definidos a partir da indentação deste, obrigando os programadores a utilizar este recurso, ao contrário de outras linguagens onde isso deve partir da padronização ou bom senso dos desenvolvedores. Além disso, o código fica mais legível sem o uso de caracteres especiais delimitadores ou palavras especiais para definir o fim de um bloco de código. Python é um linguagem que atende em parte à simplicidade global, pois tenta implementar apenas uma maneira correta de se construir um comando, salvo excessões que poderão ser vistas mais à frente. Também possui alguma sobrecarga de operadores como o "+" e o "%", o que é bom, mas pode ser mal usado de forma a prejudicar a legibilidade. Capacidade de escrita: 'Python possui suporte para abstração de processos e dados. É possível criar funções para trechos de código utilizados com frequência e também criar módulos que podem ser importados. Possui também suporte para a criação de classe e objetos, cada um com seus atributos e métodos, o que permite reutilizar esta estruturas posteriormente sem precisar conhecer muitos detalhes de sua implementação. A linguagem também possui uma grande quantidade de bibliotecas padrão, com suporte a diversos tipos de ferramentas para as mais variadas tarefas, o que ajuda na capacidade de escrita, já que os programadores não precisam implementar operações muito complexas para atividades consideradas simples. Existem biblotecas para facilitar a criação de aplicações para a web, para comunicação com banco de dados, tratamento de listas e strings, entre outras. '''Confiabilidade: '''Como ponto negativo nesse critério, está a verificação de tipos dinâmica, que é mais dispendiosa e pode levar a erros por parte do programador cuja fonte é difícil de encontrar. Como pontos positivos, tem-se a capacidade de tratar excessões em tempo de execução através dos comandos try...except. '''Custo: '''Este é um critério que depende de muitos fatores. Python é uma linguagem com recursos que facilitam seu aprendizado, baixando os custos de treinamento dos programadores. A boa capacidade de escrita e legibilidade reduzem os custos de escrever programas nessa linguagem e de realizar manutenções respectivamente. Fatores que podem fazer muita diferença na escolha de uma linguagem. Entretanto, estes fatores são opostos ao custo de execução, que leva em conta, dentre outras características, a verificação de tipos dinâmica, que é utilizada em Python. 'Sintaxe Um programa em Python é lido por um analizador sintático, cuja entrada são tokens (símbolos) gerados pelo analizador léxico. Os programas nessa linguagem são divididos em linhas lógicas. O fim de uma linha lógica é definido pelo token NEWLINE. Uma linha lógica é composta por uma ou mais linhas físicas, que são uma sequência de caracteres terminadas com "\n". Duas ou mais linhas físicas podem ser unidas em uma única linha lógica usando o caracter barra-invertida ("\") no fim da linha física. Porém ao fazer isso, não é possível colocar comentários ao lado dessas barras. Essa união pode ser feita de duas maneiras, de forma explícita, como explicado acima, e de forma implícita, como no caso de expressões entre parênteses, colchetes ou chaves, que podem ser dividas em mais de uma linha sem o uso de barras invertidas. Exemplos: #explicita (codigo retirado de https://docs.python.org/3/reference/index.html) if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second <= 60: #Validacao de data return 1 #implicita dias_semana = 'terca', 'quarta', #Nomes dos 'quinta', 'sexta', 'sabado', #dias da 'domingo' #semana Comentários em Python são feitos usando "#" no início de cada linha como mostrado nos dois exemplos acima. Os blocos de código são definidos através da indentação e não pelo uso de caracteres especiais utilizados como delimitadores ou palavras reservadas. Palavras reservadas: False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise 'Variáveis' Variáveis são declaradas sem definir o tipo, pois Python faz checagem de tipos dinâmica. Nomes de variáveis começam sempre com uma letra ou “_” e não podem conter espaços. Python é case-sensitive, ou seja, letras maiúsculas e minúsculas são diferentes, e variáveis com nomes iguais diferindo apenas em uma ou mais letras maiúsculas ou minúsculas são diferentes também. Pode-se usar a função type(variavel) para saber o tipo atribuído pela linguagem à variável. Exemplos: >>> Variavel = 10 #uma variavel >>> type(Variavel) >>> variavel = 20 #outra variavel >>> a = "String" #declaracao de uma string >>>b = 10 #declaracao de um int 'Tipos de dados' *Booleano (bool) : True ou False. *Inteiro (int): Números inteiros. *Float (float): Números reais. *Complexos (complex): Números complexos. *Strings (str): Cadeia de caracteres imutáveis (para modificar uma string é necessário criar outra). *Listas (list): Lista heterogênea mutável (é possível remover ou adicionar valores à lista depois de criada). *Tuplas (tuple): Tupla imutável. *Conjunto (set): Conjunto não-ordenado. *Dicionário (dict): Conjunto associativo. 'Strings' Strings podem ser declaradas de duas maneiras: usando aspas simples ou aspas duplas. Se uma string for declarada usando aspas duplas pode conter aspas simples dentro dela, e o contrário também é válido. Se for preciso usar aspas simples dentro de uma string declarada usando aspas simples, pode-se usar “\” antes das aspas e essa será parte da string. Exemplos: >>>string = "Seminario Python" >>>String = 'Seminario Python' >>>st = 'Preciso de um copo d\'agua' >>>print(st) Preciso de um copo d'agua Também é possível declara as strings usando três aspas duplas ou simples seguidas, no início e no fim, e dessa maneira a string pode ter mais de uma linha. Exemplo: >>>string = """ linha 1 linha 2 linha 3 """ >>>print(string) linha 1 linha 2 linha 3 Os caracteres da string são endereçados de forma que é possível acessa-los utilizando variávelposição_caracter. Também é possível pegar um cadeia de caracteres da string usando string:numero_de_caracteres_a_partir_do_inicio. Exemplo: >>>string = "Seminario Python" >>>print(string:4) Semi Existem outras combinações com este operador que permitem obter outras combinações de caracteres. Outra característica interessante de strings em Python é o operador “%” usado para fazer substituições em strings. Por exemplo: >>> a = "Nome: %s, Idade: %d" >>>print(a%("Joao", 20)) Nome: Joao, Idade: 20 Além disso, existem muitas outras funções de manipulações de strings em Python, como a len(string) que retorna o tamanho da string, por exemplo. Para converter um tipo de dado para string, usa-se str(variavel). Também existem funções para converter para outros tipos de dados, como int(variavel), float(variavel). Listas É possível armazenas valores de quaisquer tipos nas listas, inclusive outras listas e, assim como as strings, seus membros são indexados. Exemplos: #declaracao de listas >>>lista = 1,2,3 >>>lista2 = 2.34, [1,2,3] #selecionar um membro da lista pelo indice >>>print (lista20) "Aluno" Indices negativos podem ser usados para acessa a lista a partir do final. Para inserir um novo membro na lista ou concatenar listas pode-se utilizar o operador "+". Exemplos: #concatenacao de listas usando "+" >>>a = 1,2,3 >>>a+2,2 1,2,3,2,2 Também é possível deletar elementos da lista. Exemplo: >>>a = "Joao", 20 >>>del a1 >>>print(a) 20 Existem muitas outras funções para manipular listas em Python presentes em uma biblioteca padrão. Tuplas Assim como strings, são imutáveis, ou seja, não é possível modificá-las sem antes criar uma nova. Tuplas são mais eficientes que listas para armazenar um conjunto fixo de valores, porém não é possível usar os métodos de listas em tuplas. Para declara uma tupla são usados parênteses e vírgulas para separar os elementos da tupla. Deve-se tomar cuidado ao declarar variáveis do tipo float, pois caso utilize vírgulas por engano, a variável passa a ser vista pela linguagem como uma tupla, mesmo sem os parênteses, que são apenas uma boa prática. Exemplos: >>>tupla = (1,2,3) #declarando uma tupla >>>tup = 1,2 #uma tupla tambem pode ser declarada desta maneira Listas podem ser convertidas em tuplas, assim como tuplas podem ser convertidas em listas. Exemplo: >>>lista = list(tupla) #transforma a variavel do tipo tupla em lista >>>tupla = tuple(lista) #transforma a variavel do tipo lista em tupla Dicionários É um conjunto de elementos, onde é possível criar uma relação entre chaves e valores através de um índice imutável de qualquer tipo. Em listas, a localização do elemento é feita pelo índice inteiro e sequencial. Nos dicionários essa localização é feita usando uma chave que faz referência a posição de um valor. Exemplo: >>>autor = {"Livro1" : "autor1", "Livro2" : "autor2"} #declaracao de um dicionario >>>print (autor"Livro1") autor1 É possível adicionar, modificar e excluir relações. Exemplo: #utilizando o dicionario autor acima #adicionar uma relacao >>>autor"Livro3" = "autor3" >>>autor {'Livro3': 'autor3', 'Livro1': 'autor1', 'Livro2': 'autor2'} #modificar uma relacao >>>autor"Livro3" = "autor4" >>> autor {'Livro3': 'autor4', 'Livro1': 'autor1', 'Livro2': 'autor2'} #excluir uma relacao >>> del autor"Livro3" >>> autor {'Livro1': 'autor1', 'Livro2': 'autor2'} Dicionários também possuem outros métodos para manipular esse tipo de dado. 'Operadores' Operadores aritméticos >>>2+3 #adicao 5 >>>3-2 #subtracao 1 >>>4/2 #divisao 2 >>>4*2 #multiplicacao 8 >>>2 ** 3 #exponenciacao 8 >>>4%2 #resto divisao 0 Se utilizar os operadores "+" e "*" em listas, strings e tuplas tem-se algumas operações diferentes. Exemplos: >>> 1,2*3 #"*" cria uma lista, por exemplo, com os elementos repetidos o numero de vezes que for indicado depois do operador. Serve para strings e tuplas também. 2, 1, 2, 1, 2 >>> "Seminario " + "Python" #"+" concatena strings, listas, tuplas. 'Seminario Python' Operadores de atribuição >>>a = 10 #atribui um valor a uma variavel >>>print a 10 >>>a += 2 #equivalente a a = a+2 >>>a 12 >>>a /= 5 #equivalente a a = a/2 >>>a 2 >>>a *= 10 #equivalente a a = a*10 >>>a 100 Operadores Condicionais >>>1 1 #igual True >>>1 != 1 #diferente False >>>1 < 2 #Menor True >>>1 > 2 #maior False >>>1 <= 1 #menor ou igual True >>>1 >= 1 #maior ou igual True >>>1 in 1,2 #verifica se o valor antes de in esta presente no valor depois de in. Pode ser usado em dicionários, listas, tuplas, strings, entre outros. True >>>"ar" in "carro" #outro exemplo True Estas operações podem ser aplicadas em outros tipos de dados, como listas, strings e tuplas. Também podem ser utilizados operadores compostos como visto no primeiro exemplo desta página (if 1900<2100), além dos operadores lógicos and, or e not e operadores sobre representações de números decimais em binário. Operadores podem ser combinados. 'Estruturas de Controle' If, elif, else A sintaxe básica dessa estrutura é a seguinte: if (condicao): #codigo elif (condicao): #codigo else: #codigo Os blocos são delimitados pela indentação, se não estiver indentado um erro é gerado. For A sintaxe para o for é: #sintaxe simples for variavel_controle in variavel_alvo: #codigo #pode ser usado junto de if e else. Atencao para a indentacao. for variavel_controle in variavel_alvo: if (condicao): #codigo else: #codigo Funções como len(variavel), que retorna o tamanho de uma lista, string, tupla, entre outros, e range(x,y), que gera uma sequencia de números de x a y, são muito utilizadas para auxliar no controle de iterações. Os comandos continue e break também estão disponíveis, o primeiro reinicia o loop e o segundo sai dele. While A sintaxe do while é: while (condicao): #codigo else: #codigo Assim como no laço for, pode-se usar os comandos continue e break. 'Funções' Uma função em Python é definida da seguinte forma: #definicao de uma funcao em Python. Se desejar retornar um valor, basta acrescentar o comando return valor no final. def nome_funcao(argumento1, argumento2,..): #codigo_funcao Nas funções em Python, as variáveis dentro do escopo da função (delimitado pela indentação), são apenas locais e não podem ser reconhecidas por código externo à função. Para retornar vários valores de uma função pode-se usar um tipo de dados como listas para armazenas os valores e então retornar essa lista, por exemplo. Python é muito flexível quanto aos parâmetros de suas funções, e é possível passa-los para as funções de muitas maneiras, pode-se passar parâmetros compostos, definir valores padrão para algum argumento da função, especificar a qual parâmetros um determinado argumento pertence, entre outros. 'Referências' *SEBESTA, Robert W. Conceitos de Linguagens de Programação, 5ª edição. Bookman *http://pt.wikipedia.org/wiki/Python *The Python language reference: https://docs.python.org/3/reference/index.html *http://www.codecademy.com/pt-BR/tracks/python *https://www.python.org/ *http://www.python.org.br/wiki *http://www.async.com.br/projects/python/pnp/contents.html